package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCCommissionYearConfig;
import com.shrct.businessprocess.project.RCSalesAssignment;
import com.shrct.businessprocess.project.RCSalesCommissionOverflowConfigItem;
import com.shrct.businessprocess.project.RCSalesCommissionYearSettlement;
import com.shrct.businessprocess.project.RCSalesTeam;
import com.shrct.businessprocess.project.impl.RCSalesCommissionYearConfigImpl;
import com.shrct.businessprocess.project.proxy.RCSalesCommissionYearConfigProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCSalesCommissionYearConfigImpl.class)
public interface RCSalesCommissionYearConfig extends IModelObject {
  public abstract RCCommissionYearConfig getOverallConfig();
  
  public abstract RCSalesCommissionYearConfig setOverallConfig(final RCCommissionYearConfig overallConfig);
  
  public abstract RCSalesAssignment getSaler();
  
  public abstract RCSalesCommissionYearConfig setSaler(final RCSalesAssignment saler);
  
  public abstract Double getRate();
  
  public abstract RCSalesCommissionYearConfig setRate(final Double rate);
  
  public abstract Date getStartDate();
  
  public abstract RCSalesCommissionYearConfig setStartDate(final Date startDate);
  
  public abstract Double getBaseGrossProfitGoalFactor();
  
  public abstract RCSalesCommissionYearConfig setBaseGrossProfitGoalFactor(final Double baseGrossProfitGoalFactor);
  
  public abstract Double getBaseGrossProfitGoal();
  
  public abstract RCSalesCommissionYearConfig setBaseGrossProfitGoal(final Double baseGrossProfitGoal);
  
  public abstract Double getMonthlySalary();
  
  public abstract RCSalesCommissionYearConfig setMonthlySalary(final Double monthlySalary);
  
  public abstract Double getAdditionalSharedCost();
  
  public abstract RCSalesCommissionYearConfig setAdditionalSharedCost(final Double additionalSharedCost);
  
  public abstract Double getYearAmountTarget();
  
  public abstract RCSalesCommissionYearConfig setYearAmountTarget(final Double yearAmountTarget);
  
  public abstract Double getCostTarget();
  
  public abstract RCSalesCommissionYearConfig setCostTarget(final Double costTarget);
  
  public abstract Double getSharedCostTarget();
  
  public abstract RCSalesCommissionYearConfig setSharedCostTarget(final Double sharedCostTarget);
  
  public abstract Integer getOnJobMonthsTarget();
  
  public abstract RCSalesCommissionYearSettlement getLastSettlement();
  
  public abstract RCSalesCommissionYearConfig setLastSettlement(final RCSalesCommissionYearSettlement lastSettlement);
  
  public abstract RCSalesCommissionYearSettlement getSettlement();
  
  public abstract void update(final Procedure1<? super RCSalesCommissionYearConfig> updater);
  
  public abstract Collection<RCSalesCommissionOverflowConfigItem> getOverflowConfigItems();
  
  public abstract RCSalesCommissionOverflowConfigItem createAndAddtoOverflowConfigItems();
  
  public abstract RCSalesCommissionOverflowConfigItem createAndAddtoOverflowConfigItems(final Procedure1<RCSalesCommissionOverflowConfigItem> updater);
  
  public abstract RCSalesCommissionYearConfig removeFromOverflowConfigItems(final RCSalesCommissionOverflowConfigItem rCSalesCommissionOverflowConfigItem);
  
  public abstract RCSalesCommissionYearConfig removeAllOverflowConfigItems();
  
  public abstract RCSalesCommissionOverflowConfigItem createConfigItem(final Procedure1<? super RCSalesCommissionOverflowConfigItem> init);
  
  public abstract void deleteConfigItem(final RCSalesCommissionOverflowConfigItem item);
  
  public abstract Collection<RCSalesTeam> getTeams();
  
  public abstract RCSalesTeam createAndAddtoTeams();
  
  public abstract RCSalesTeam createAndAddtoTeams(final Procedure1<RCSalesTeam> updater);
  
  public abstract RCSalesCommissionYearConfig removeFromTeams(final RCSalesTeam rCSalesTeam);
  
  public abstract RCSalesCommissionYearConfig removeAllTeams();
  
  public abstract RCSalesTeam createTeam(final Procedure1<? super RCSalesTeam> init);
  
  public abstract void deleteTeam(final RCSalesTeam item);
  
  public abstract Double getTotalCommissionAmountPaid();
  
  public abstract Double getTotalCommission();
  
  public abstract Double getTotalOverflowCommissionAmountPaid();
  
  public abstract Double getTotalOverflowCommissionAmount();
  
  public abstract Double getTotalTeamPrizeAmountPaid();
  
  public abstract Double getTotalTeamPrizeAmount();
  
  public abstract Double getTotalAmount();
  
  public abstract Double getTotalAmountPaid();
  
  public abstract void checkValid();
  
  public abstract RCSalesCommissionYearConfigProxy toProxy();
}
